package com.atguigu.gulimall.ware.service;

import com.atguigu.common.to.SkuHasStockVo;
import com.atguigu.common.to.mq.OrderTo;
import com.atguigu.common.to.mq.StockLockedTo;
import com.atguigu.gulimall.ware.vo.WareSkuLockVo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.atguigu.common.utils.PageUtils;
import com.atguigu.gulimall.ware.entity.WareSkuEntity;

import java.util.List;
import java.util.Map;

/**
 * 商品库存
 *
 * @author GCQ
 * @email python0526@163.com
 * @date 2020-12-18 14:36:45
 */
public interface WareSkuService extends IService<WareSkuEntity> {

    PageUtils queryPage(Map<String, Object> params);

    /**
    * @需求描述: 系统管理员员-库存Sku组 模块 采购成功保存库存信息
    * @创建人: 郭承乾
    * @创建时间: 2020/12/23 19:25
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    void addStock(Long wareId, Integer skuNum, Long skuId);

    /**
    * @需求描述: 系统管理员-商品库存组 模块 查询skuid是否有库存
    * @创建人: 郭承乾
    * @创建时间: 2020/12/28 8:29
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    List<SkuHasStockVo> hasStock(List<Long> skuIds);

    /**
    * @需求描述: 系统管理员-商品库存组 模块 锁定库存
    * @创建人: 郭承乾
    * @创建时间: 2021/01/07 13:02
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    Boolean orderLockStock(WareSkuLockVo vo);


    /**
    * @需求描述: 系统管理员-商品库存组 模块 监控库存队列
    * @创建人: 郭承乾
    * @创建时间: 2021/01/07 17:20
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    void unLockStock(StockLockedTo lockedTo);


    /**
    * @需求描述: 系统管理员-商品库存组 模块 订单关单
    * @创建人: 郭承乾
    * @创建时间: 2021/01/07 19:46
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    void unLockStock(OrderTo orderTo);
}

